#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main()
{
    int ret = 0;
    char* p = (char*)malloc(1000*1000*1000*4);
    if(p == NULL)
    {
        ret = errno;
        printf("mallco fail, %d, %s\n, errno, strerror(errno)");
    }
    else 
    {
        printf("success\n");
    }
    return ret;
}
//自己写一个错误码体系
//const char* string_error[] = 
//{
//    "success",
//    "error1",
//    "error2",
//    "error3",
//};
//
//int main()
//{
//    //查看所有的错误码的信息
//    for(int i = 0; i < 200; i++)
//    {
//        printf("%d -> %s\n", i, strerror(i));
//    }
//    return 0;
//}
//int main()
//{
//    //模拟一个进程
//    printf("hello linux\n");
//    return 0;
//}

//#define N 5
//int main()
//{
//    //创建多个子进程
//    printf("父进程：%d\n", getpid());
//    int i = 0;
//    for(; i < N; i++)
//    {
//        pid_t id =  fork();
//        if(id == 0)
//        {
//            int cnt = 5;
//            while(cnt >= 0)
//            {
//                 cnt--;
//                 printf("子进程：%d\n", getpid());
//                 sleep(1);
//            }
//            exit(0);
//        }
//    }
//    sleep(30);
//    return 0;
//
//   // printf("before: pid:%d\n", getpid());
//   // fork();
//
//   // printf("after: pid:%d\n", getpid());
//   // while(1);
//   // return 0;
//}


//int main(int argc, char* argv[], char* env[])
//{
//    printf("argc addr:%p\n", &argc);
//    int i = 0;
//    for(; argv[i]; i++)
//    {
//        printf("argv[%d] addr %p\n",i, argv[i]);
//    }
//
//    int j = 0;
//    for(; env[j]; j++)
//    {
//        printf("env[%d] addr %p\n", j, env[j]);
//    }
//    return 0;
//}
